Methods and systems for management of a processing offloader

ABSTRACT

Introduced here are systems to manage and discover a processing offloader. A first multimedia device may identify a processing offloader in a networked environment. A first multimedia device may determine that a bandwidth of a second multimedia device in the networked environment falls below a threshold bandwidth, indicating that the second multimedia device may process instructions and render multimedia information with increased latency or delay. Based on this determination, the first multimedia device may forward instructions from the second multimedia device to the processing offloader for the processing offloader to process and render multimedia information on behalf of the second multimedia device based on the received instructions. The first multimedia device may forward rendered multimedia information from the processing offloader to the second multimedia device, and the second multimedia device may output the rendered multimedia information to an output device.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.16/726,085, entitled “METHODS AND SYSTEMS FOR DISCOVERY AND MANAGEMENTOF A PROCESSING OFFLOADER,” and filed on Dec. 23, 2019, which claims thebenefit of United States Provisional Patent Application No. 62/786,111,entitled “METHODS AND SYSTEMS FOR DISCOVERY AND MANAGEMENT OF APROCESSING OFFLOADER,” and filed on Dec. 28, 2018, the disclosure ofwhich is incorporated herein by reference in its entirety.

BACKGROUND

Multimedia devices may render multimedia content of various forms ofmedia (e.g., audio, video, etc.). For example, a set top box may renderaudio and video content to an output device (e.g., television). In somecases, a multimedia device may receive instructions to update a userinterface (UI), such as a guide or menu. A user may interface with theUI using a control device (e.g., remote control). For example, a usercan view a menu that shows available channels/programs and actuatebutton(s) on a remote control to request an update to the menu.

In many cases, to render multimedia content, such as to update a UI, amultimedia device may receive instructions to render multimedia contentfrom a remote node (e.g. a satellite, a remote server, etc.). Themultimedia device may process the received instructions and rendermultimedia content onto an output device (e.g., a television, a speaker,etc.). In many cases, multiple multimedia devices may be includedthroughout a network environment (e.g., a home, a building, an office,etc.), and each multimedia device in the network environment may includea separate UI.

BRIEF DESCRIPTION OF THE DRAWINGS

Various features and characteristics of the technology will become moreapparent to those skilled in the art from a study of the DetailedDescription in conjunction with the drawings. Embodiments of thetechnology are illustrated by way of example and not limitation in thedrawings, in which like references may indicate similar elements.

FIG. 1 depicts an illustration of a networked environment includingmultiple multimedia devices and a processing offloader, consistent withvarious embodiments.

FIG. 2 depicts an illustration of a networked environment, consistentwith various embodiments.

FIG. 3 depicts a flow process illustrating a method to utilize aprocessing offloader, consistent with various embodiments.

FIG. 4 depicts a flow process for managing a processing offloader,consistent with various embodiments.

FIG. 5 depicts a flow process illustrating a method to processinformation using a processing offloader in a networked environment,consistent with various embodiments.

FIG. 6 is a block diagram illustrating an example of a processing systemin which at least some operations described herein can be implemented.

FIG. 7 is a partial perspective view illustrating offloader modulesconfigured in accordance with embodiments of the present technology.

The drawings depict various embodiments for the purpose of illustrationonly. Those skilled in the art will recognize that alternativeembodiments may be employed without departing from the principles of thetechnology. Accordingly, while specific embodiments are shown in thedrawings, the technology is amenable to various modifications.

DETAILED DESCRIPTION

Multimedia devices may be capable of rendering multimedia content, suchas outputting video and audio to an output device (e.g., television). Anexample of such a multimedia device may include a set top box (STB),such as a Hopper® receiver or a Joey® receiver manufactured by DishNetwork® L.L.C. The multimedia device may receive instructions toperform various functions relating to the rendering of multimediacontent. Examples of such instructions may include user interface (UI)graphics rendering instructions, internet-browsing instructions,firmware update instructions, etc. Upon receipt of instructions, themultimedia device may process the instructions and render multimedia(e.g., graphics, audio, etc.) to an output device (e.g., television)based on the received instructions.

The multimedia device may receive an input by a remote-control device(e.g., remote control, mobile phone, etc.) indicating a request togenerate and/or update a guide or menu (or “user interface”) displayedon an output device. To handle this request, the multimedia device mayrequest graphics rendering instructions from a remote node (e.g.,satellite, server, etc.). In response, the multimedia device may receivegraphics rendering instructions from the remote node and process theinstructions to render information representing the updated UI based onthe instructions.

In many cases, multimedia devices are manufactured in variousiterations. For example, multiple iterations of a multimedia device maybe designed and manufactured over a period of time. With each iterationof such multimedia devices, the computational resources (processingcapacity, memory capacity, etc.) and functionality of the multimediadevice may be increased. Accordingly, older (or “legacy”) multimediadevices include fewer features and fewer computational resources thanthe more recently manufactured iterations of that multimedia device.

Updating a UI by processing sets of UI graphics rendering instructionsmay be computational-resource intensive. In other words, a large portionof available computational resources (e.g., processor, memory, etc.) maybe exhausted to process UI graphics rendering instructions and render anupdated UI based on such instructions. In some instances, whencomputational resources of a multimedia device are exhausted, a backlogof unprocessed instructions may develop and/or increase. This backlog ofunprocessed and/or unrendered instructions may create a delay orincreased latency in the updating of the UI. This delay may result in alag in the output onto an output device (e.g., television) that mayreduce user experience when viewing or interacting with the UI.

The present disclosure relates to discovering and managing one or moreprocessing offloaders (or “co-processors”) in a networked environment. Aprocessing offloader may handle processing capabilities on behalf of oneor more multimedia device in a networked environment. For example, amultimedia device may forward UI graphics instructions to the processingoffloader, and the processing offloader can process the instructions andsend the rendered UI graphics to the multimedia device.

Accordingly, the processing offloader may process (or “offload”)computationally-intensive instructions on behalf of multimedia device(s)and transmit the rendered multimedia to the multimedia device(s).Utilizing a processing offloader to process computationally-intensiveinstructions may reduce the computational resources demanded bymultimedia device(s), particularly with legacy multimedia devices.Utilizing the processing offloader may reduce latency inmodifying/updating the UI and increase the efficiency of thecomputational resources of the multimedia devices in the networkedenvironment.

System Overview

FIG. 1 depicts an illustration of a networked environment 100 includingmultiple multimedia devices 102, 104, 106 and a processing offloader108, consistent with various embodiments. As shown in FIG. 1 , a firstmultimedia device 102, a second multimedia device 104, and a thirdmultimedia device 106 is included in a networked environment 100.However, any number of multimedia devices may be included in thenetworked environment 100. Furthermore, any suitable number ofprocessing offloaders may be used.

Multimedia devices 102, 104, 106 can include any network-accessibledevice configured to process and render multimedia data. For example,the multimedia device 102, 104, 106 may include a set top box configuredto render multimedia (e.g., audio, video, etc.) to an output device(e.g., television, speaker, etc.). In some embodiments, the multimediadevices 102, 104, 106 are configured to process and render userinterface (UI) graphics rendering instruction(s) to generate and/orupdate a UI specific to a multimedia device.

Within the networked environment 100, a multimedia device can serve as aprimary multimedia device for the networked environment 100. Forexample, the first multimedia device 102 may be a primary multimediadevice. As primary multimedia device, first multimedia device 102communicates with a remote node (e.g., satellite, external server, etc.)and forwards information between the connected device(s) within thenetworked environment 100. In some embodiments, the primary multimediadevice (e.g., first multimedia device 102) may include greatercomputational (e.g., CPU, memory) resources and additional functionalitythan the other multimedia device(s) in the networked environment 100.

One or more secondary multimedia devices (e.g., second multimedia device104, third multimedia device 106) may connect to the first multimediadevice 102. The second multimedia device 104 may communicate with aremote node (e.g., satellite, external server, etc.) via the firstmultimedia device 102, where the first multimedia device 102 forwardsinformation between the remote node and the second multimedia device104.

In some embodiments, a multimedia device 102, 104, 106 includes acomputing device that includes instructions to execute at least somefunctionality of a multimedia device (or a “thin client”). The thinclient may rely on another computing device, such as a server, videogame console, desktop computer, etc., to performcomputationally-intensive processes and execute the instructions toperform functionality of a multimedia device. The thin client mayperform some or all functionality of a multimedia device as describedherein.

Devices within the networked environment 100 can communicate via aninterconnect 112A-F. An interconnect 112A-F may include one or morewired or wireless networks, including personal area networks (PANs),local area networks (LANs), wide area networks (WANs), metropolitan areanetworks (MANs), cellular networks, the Internet, etc. In someembodiments, an interconnect (e.g., interconnect 112A, 112C) may utilizecoaxial communication protocols (e.g., the Multimedia Over CoaxialAlliance (MOCA)™ protocol) to communicate between multimedia devices. Insome embodiments, interconnect 112B may connect to the first multimediadevice 102 via a universal serial bus (USB) connection.

In some embodiments, a multimedia device 102, 104, 106 may includemultiple communication channels (e.g., Wi-Fi, MOCA™, etc.). In theseembodiments, a multimedia device 102, 104, 106 may transmit informationvia one or more of the multiple communication channels, where themultimedia device can balance information transmission across eachcommunication channel based on the bandwidth availability of eachchannel. For example, in a dual-channel interconnect utilizing a MOCA™coaxial channel and Wi-Fi wireless channel, the multimedia device maydetermine a channel (e.g., MOCA™ or Wi-Fi) to transmit information. Inanother example, a multimedia device may regulate or otherwise controltransmission across its own communication channel(s) and one or morecommunication channel(s) of other multimedia devices.

In some embodiments, the transmission of information between the firstmultimedia device 102 and the processing offloader 108 is encrypted. Thefirst multimedia device 102 may encrypt information and transmit theencrypted information to the processing offloader via interconnect 1128.Examples of encryption techniques may include Triples Data EncryptionStandard (DES), RSA public-key encryption, advanced encryption standard(AES), etc. In some embodiments, the information is transposed beforetransmission to the processing offloader 108. Upon receipt of theencrypted information, the processing offloader 108 decrypts theencrypted information. The processing offloader 108 can encrypt thegraphics data or processed information using the same or a differentencryption technique and transmit the encrypted information to the firstmultimedia device 102.

In some cases, to update the UI of a multimedia device (e.g., firstmultimedia device 102), the multimedia device receives an input from aremote device (e.g., a remote control input responsive to an actuationof a button on the multimedia device) within the networked environment,where the input indicates a request to update the UI. In other cases,the UI of a multimedia device may be updated programmatically (e.g.,upon satisfying a conditional test, upon satisfying a temporalthreshold, upon pre-loading background or predicted content, etc.),without necessarily requiring an input from the remote device. Inresponse, a multimedia device (e.g., first multimedia device 102)transmits a request for UI graphics rendering instruction(s) to a remotenode (e.g., satellite), where the multimedia device receives the UIgraphics rendering instruction(s) from the remote node. The multimediadevice (e.g., first multimedia device 102) processes the received UIgraphics rendering instruction(s) and renders the updated UI via anoutput device (e.g., television 110A).

A processing offloader 108 may perform processing operations on behalfof multimedia device(s) 102, 104, 106 in the networked environment 100.In an embodiment, the processing offloader 108 receives instructions(e.g., UI graphics rendering instructions) from multimedia device(s)102, 104, 106, and processes such instructions on behalf of themultimedia device(s) 102, 104, 106. In some embodiments, the processingoffloader 108 receives instructions from a multimedia device 102, 104,106 based on a determination that available processing resources (or“bandwidth”) of a multimedia device 102, 104, 106 has fallen below athreshold amount of available processing resources (or “thresholdbandwidth”).

In embodiments, the processing offloader 108 generates a UI on behalf ofa multimedia device 102, 104, 106. For example, the processing offloader108 can process the UI graphics rendering instructions and transmit therendered UI graphics information to the appropriate multimedia device102, 104, 106. One or more UIs can be generated/maintained at theprocessing offloader 108, where each UI is associated with a multimediadevice 102, 104, 106 in the networked environment 100. In an embodiment,the processing offloader 108 creates a unique and/or separableprocessing instance or thread for each UI associated with the multimediadevice 102, 104, 106 in the networked environment 100.

FIG. 2 depicts an illustration of a networked environment 200,consistent with various embodiments. As shown in FIG. 2 , eachmultimedia device 202, 204, 206 includes multiple processes, such as anative UI 214A-C, a web server 216A-C, a proxy 218A-C, etc.

A native UI 214A-C may include a set of rendered graphics configured toexecute on a multimedia device. For example, the rendered graphicsincluded in a native UI 214A-C may include a menu or guide outputtedonto an output device (e.g., television). Each native UI 214A, 214B,214C may include a separate set of rendered graphics.

A web server 216A-C may include processes to interact with and renderresults from devices within a public or private network. The web server216A-C may utilize an interface (e.g., common gateway interface (CGI))to interface with executable programs on remote devices (e.g., servers)over an internet connection. For example, the web server 216A-C maytransmit a request for information over an internet network, wherenetwork devices in the internet network forward the request forinformation to the appropriate remote device. The web server 216A-C mayreceive the requested information from the remote device via theinternet network. The received information may be processed at the webserver 216A-C and rendered as a portion of the UI.

A proxy 218A-C may include a proxy server configured to act as anintermediary for a remote UI executing on the processing offloader 208.For example, the proxy 218A running on the first multimedia device 202may output rendered processing instructions received by a first UI 220executing on the processing offloader 208. In some embodiments, theproxy 218A-C may run or execute as a substitute for the native UI 214A-Cor upon the native UI 214A-C shutting down. In some embodiments, theproxy 218A-C may be executed on a hypervisor/virtual machine on themultimedia device 202, 204, 206.

In some embodiments, one or more of the multimedia device(s) 202, 204,206 may include a virtual network. A virtual network may include aninterface to facilitate communication between the multimedia device anda remote computing device, such as a mobile device or a desktopcomputer. The virtual network may utilize virtual network computing(VNC) to facilitate this connection to a remote computing device, wherethe remote computing device may access and/or control some or allfunctionality of the multimedia device. In some embodiments, the virtualnetwork facilitates a graphical sharing system that may utilize a remoteframe buffer to remotely control the device from the remote computingdevice. In an embodiment, a computer program (or “application”)executing on a mobile phone may access the multimedia device via avirtual network.

As shown in FIG. 2 , the processing offloader 208 may include one ormore UIs 220, 222 executing on the processing offloader 208. In someembodiments, the processing offloader 208 executes a first UI 220 as aUI for the first multimedia device 202 and a second UI 222 as a UI forthe second multimedia device 204. One or more UIs may be executed by theprocessing offloader 208.

In some embodiments, a UI 220, 222 is executed on a processing offloader208 based on determining that a multimedia device exceeds a thresholdprocessing capacity range. In other words, if a bandwidth of amultimedia device falls below a threshold bandwidth, the processingoffloader 208 may generate a UI and process graphics instructions onbehalf of the multimedia device. Utilizing the processing offloader 208may lessen computational demand on a multimedia device while maintaininglow latency for the multimedia device.

For example, the processing offloader 208 may generate a first UI 220 toexecute a UI on behalf of the first multimedia device 202. In thisevent, the native UI 214A of the first multimedia device 202 may be shutdown or disabled. The proxy 218A of the first multimedia device may beenabled, where the proxy 218A may be configured to received renderedgraphics instructions for the first UI 220 and output the rendered firstUI 220 to an output device.

A second multimedia device 204 native UI 214B may be shut down with theprocessing offloader executing a second UI 222 using some or alltechniques as described with the first multimedia device 202. In someembodiments, rendered graphics associated with the second UI 222 may betransmitted from the processing offloader 208 to the second multimediadevice 204 via first multimedia device 202. The first multimedia device202 may forward the rendered graphics associated with the second UI 222based on identifying the second multimedia device 204 as the recipientof the rendered graphics. The proxy 2188 associated with the secondmultimedia device 204 may receive the rendered graphics and output therendered graphics.

In some embodiments, the first multimedia device 202 may synchronize theexecution of instructions between the processing offloader 208 and anymultimedia device(s) 202, 204, 206. In other embodiments, the processingoffloader and/or any multimedia device 202, 204, 206 may synchronize theexecution of instructions.

For purposes of illustration, a second UI 222 is started to process andrender information on behalf of second multimedia device 204. In thisembodiment, the proxy 2188 executing on the second multimedia device 204and the second UI 222 of the processing offloader 208 may besynchronized to optimize the flow of information and the rendering ofgraphics. Synchronizing the second UI 222 and the proxy 2188 may includematching or synchronizing the internal clocks of each of the processingoffloader 208 and the second multimedia device 204. In some embodiments,the first multimedia device 202 forwards information between theprocessing offloader 208 and the second multimedia device 204. In theseembodiments, the first multimedia device 202 may forward instructionsand information between the processing offloader 208 and the secondmultimedia device 204 in such a manner so that the flow of informationis synchronized. For example, the first multimedia device 202 may waitto transmit the instructions to the processing offloader 208 untilrendered graphics information is received at the first multimedia device202 from the processing offloader 208.

As shown in FIG. 1 , the processing offloader 208 may include a UI stack224. The UI stack 224 may be included in executing the first UI 220and/or the second UI 222. The UI stack 224 may include a set ofinstructions that facilitate operation of the UI.

The UI stack 224 may include a graphics toolkit 226. The graphicstoolkit 226 may include an application framework and toolkit forcreating and/or modifying multimedia, such as graphical user interfaces.An example of a graphics toolkit 226 may include QT. In someembodiments, the UI stack 224 may include an application programminginterface (API) to render graphics. An example of such a API may includeopen graphics library (OpenGL) for rendering vector graphics.

The UI stack 224 may include a graphics abstraction layer 228. Thegraphics abstraction layer 228 may be a layer to shield or hide theworking details of the graphics processes. This may allow for theseparation of concerns to facilitate interoperability of the UI stack224.

The UI stack 224 may include a hardware layer 230. The hardware layer230 may include the physical chipset layer of the processing offloader208. The processing offloader 208 may include a processor that includesone or more cores.

Management of Processing Offloader

FIG. 3 depicts a flow process 300 illustrating a method to utilize aprocessing offloader, consistent with various embodiments. A processingoffloader may perform UI processing and rendering functionality for atleast some of the multimedia device(s) in the networked environment.

The first multimedia device may receive one or more inputs for theprocessing offloader to handle UI graphics rendering instruction(s) onbehalf of a multimedia device (block 302). In an embodiment, an inputfrom a second multimedia device and an input from the third multimediadevice may be received at the first multimedia device. Each inputreceived may include information identifying the multimedia device and,in some embodiments, the input may include UI graphics renderinginstruction(s).

The first multimedia device may forward the input from the secondmultimedia device to the processing offloader based on prioritizing theinputs received (block 304). In an embodiment, forwarding the input mayinclude forwarding instructions to render multimedia information (e.g.,an updated UI) to the processing offloader. Prioritizing inputs mayallow for a multimedia device with less available bandwidth to haveprocessing functionality offloaded onto the processing offloader,lessening processing demand and reducing any potential latency at themultimedia device. Prioritizing the requests is discussed in greaterdetail with reference to FIG. 4 .

The native UI of the second multimedia device may be disabled (block306). As noted above, a native UI is a UI executing on a multimediadevice, and the native UI may be disabled upon determining that theprocessing offloader can render multimedia information on behalf of themultimedia device. In some embodiments, the native UI of the secondmultimedia device may be shut down upon the input from the secondmultimedia device being forwarded to the processing offloader. Shuttingdown the native UI may include disabling the UI and no longer processinggraphics rendering instruction(s) relating to the UI.

A proxy may be enabled on a multimedia device (e.g., second multimediadevice) (block 308). In some embodiments, the proxy of the secondmultimedia device may be enabled upon the input from the secondmultimedia device being forwarded to the processing offloader. As notedabove, the proxy may be configured to receive rendered graphicsrepresenting a UI and/or an updated UI, and the proxy can output therendered UI to an output device.

In some embodiments, the first multimedia device may transmit acommunication to the second multimedia device requesting the secondmultimedia device to disable the native UI and to enable the proxy. Thecommunication may be transmitted when it is determined that theprocessing offloader can handle the UI processing and renderingfunctionality on behalf of the second multimedia device.

The processing offloader may generate a UI for multimedia device(s)based on receiving an input from the multimedia device (block 310). Forexample, in an embodiment, a UI may be generated at the processingoffloader on behalf of a second multimedia device based on the receiptof an input transmitted by the second multimedia device. The UIgenerated at the processing offloader may be configured to process UIgraphics rendering instruction(s) and render UI graphics based on theinstruction(s) received.

A multimedia device (e.g., first multimedia device) may forwardinstructions to the processing offloader (block 312). In someembodiments, instructions received by the processing offloader mayinclude UI graphics rendering instruction(s) relating to a UI. In someembodiments, instructions may be transmitted from a second multimediadevice to the processing offloader via a first multimedia device. Thefirst multimedia device may receive the first graphics renderinginstruction from a second multimedia device via an interconnect (e.g.,MOCA™ connection) and forward the first graphics rendering instructionto the processing offloader.

Upon receipt of the first graphics rendering instruction, the processingoffloader may process the first graphics rendering instruction andgenerate graphics data based on the processed instruction. Theprocessing offloader may process multiple graphics renderinginstructions that represent a UI or an updated UI of a multimediadevice.

The second multimedia device may receive rendered multimedia informationrepresenting an updated UI from the processing offloader (block 314).The first multimedia device may forward the multimedia information fromthe processing offloader to the second multimedia device. Upon receiptof the rendered multimedia information, the proxy of the of themultimedia device (e.g., second multimedia device) may render a UI andoutput the rendered UI to an output device.

FIG. 4 depicts a flow process for managing a processing offloader,consistent with various embodiments. Managing the processing offloadermay include prioritizing inputs to dictate the order in which the inputsare forwarded to the processing offloader. Determining a priority toforward inputs to the processing offloader may ensure that theprocessing offloader can process and render UI graphics on behalf ofmultimedia device(s) with low latency.

As noted above, a first multimedia device may receive inputs from one ormore multimedia devices, e.g., an input from a second multimedia deviceand an input from a third multimedia device (block 402).

A first multimedia device may determine that the available processingresources (or bandwidth) of a second multimedia device falls below athreshold bandwidth (block 404). In other words, if a multimedia deviceis closer to its maximum bandwidth so that it exceeds a threshold level,the multimedia device may be vulnerable to increased latency/delay, andthe processing offloader may handle processing functionality on behalfof the processing offloader.

The bandwidth of the processing offloader may include availableprocessing resources of a multimedia device. In an embodiment, the firstmultimedia device may determine the bandwidth of a device (e.g., secondmultimedia device, processing offloader) by inspecting the interconnectconnecting the first multimedia device and the device. In someembodiments, the first multimedia device may determine the bandwidth bycomparing a measured/identified bandwidth over the interconnect with aknown maximum bandwidth of the device.

In some embodiments, the first multimedia device may receive informationfrom the processing offloader indicating the processing resourcesutilized by the processing offloader. In an embodiment, processingcapacity may be expressed in Million instructions per second (MIPS), ameasure of the raw speed of processing resources of a device. Forexample, a first multimedia device may receive a message indicating aprocessing resource utilization of a second multimedia device that is 5KMIPS, and a maximum processing capacity of 20K MIPS.

The bandwidth of the second multimedia device may be compared against athreshold bandwidth. The threshold bandwidth may include a known orpredetermined bandwidth that represents the maximum utilization ofprocessing resources of a device before some or all processingfunctionality is offloaded onto a processing offloader.

For example, if the maximum processing capacity of the processingoffloader is 20K MIPS, and 3K MIPS is the processing resources utilizedby the processing offloader, then 17K MIPS is the available processingresources for the processing offloader. The difference between theutilized processing resources (3K MIPS) and the maximum processingresources (20K MIPS) of a device may be illustrated as a differential(17K MIPS). Furthering this example, if the threshold bandwidth is 5KMIPS, the differential (17K MIPS) is greater than the thresholdbandwidth (5K MIPS). This may illustrate that there is sufficientprocessing resources for the device to handle processing functionalityitself.

In a second example, if the maximum processing capacity of theprocessing offloader is 20K MIPS, and 17K MIPS is the processingresources utilized by the processing offloader, then 3K MIPS is theavailable processing resources for the processing offloader. If thethreshold bandwidth is 5K MIPS, the available processing resources ofthe device (3K MIPS) is less than the threshold bandwidth (5K MIPS).This may illustrate that the device is close to its maximum processingcapacity, and the processing offloader can handle the processingfunctionality on behalf of the device to prevent an increasedlatency/delay in processing and rendering multimedia content.

In some embodiments, the first multimedia device may compare thebandwidth among multiple devices. For example, a first multimedia devicemay compare the bandwidth of a second multimedia device (e.g., 2K MIPS)and a third multimedia device (e.g., 4K MIPS). In this example, thesecond multimedia device (2K MIPS) has less available processingresources than a third multimedia device (4K MIPS). Accordingly, in theexample, the second multimedia device may be prioritized and have theprocessing offloader handle processes on behalf of the second multimediadevice ahead of the third multimedia device.

The first multimedia device may prioritize the input from the secondmultimedia device and forward instructions from the second multimediadevice to the processing offloader (block 406). Once received at theprocessing offloader, the processing offloader may generate a second UIand perform processing and rendering of UI graphics rendering commandsfor the UI of the second multimedia device.

The first multimedia device may forward rendered multimedia informationfrom the processing offloader to the second multimedia device (block408). The rendered multimedia information may represent processedinstructions received from the second multimedia device and the renderedmultimedia information may represent graphics for an updated UI.

With the processing offloader handling processes on behalf of the secondmultimedia device, the first multimedia device may determine whether theprocessing offloader can handle processes on behalf of a subsequentdevice (e.g., the third multimedia device).

The first multimedia device may determine an updated bandwidth of theprocessing offloader (block 410). The updated bandwidth of theprocessing offloader may include the available processing resources ofthe processing offloader that includes the UI graphics renderinginstructions from the second multimedia device and the rendered UIgraphics transmitted from the processing offloader. The updatedbandwidth may be used in determining whether a subsequent set ofinstructions from another device (third multimedia device) can beforwarded to the processing offloader without increased latency by theprocessing offloader. In an embodiment, the updated bandwidth may bedetermined by comparing a bandwidth of the processing offloader with amaximum processing capacity of the processing offloader.

The first multimedia device may compare the updated bandwidth of theprocessing offloader with a threshold processing offloader bandwidth(block 412). In other words, the first multimedia device may determinewhether the processing offloader has the bandwidth to handle processingand rendering processes for a subsequent multimedia device. If theupdated bandwidth of the processing offloader exceeds a thresholdprocessing offloader bandwidth, the processing offloader may handle theprocesses for the third multimedia device.

The threshold processing offloader bandwidth may be a predeterminedthreshold level of available processing resources of the processingoffloader. In some embodiments, the threshold processing offloaderbandwidth may be the amount of processing resources to perform theprocessing of instructions for the third multimedia device.

As an example, a utilized bandwidth of a processing offloader may bedetermined to be 5K MIPS, and a maximum bandwidth of the processingoffloader is 20K MIPS. Accordingly, the bandwidth differential of theprocessing offloader is 15K MIPS. If a threshold processing offloaderbandwidth is 3K MIPS, the bandwidth differential of the processingoffloader (15K MIPS) is greater than the threshold processing offloaderbandwidth (3K MIPS) and the processing offloader can handle processesfor a multimedia device.

The first multimedia device may forward instructions from the thirdmultimedia device to the processing offloader based on determining thatthe updated bandwidth of the processing offloader exceeds the thresholdprocessing offloader threshold (block 414). In response, the processingoffloader may generate a UI to handle processing capabilities on behalfof the third multimedia device. In an embodiment, the first multimediadevice may forward instructions from the first multimedia device to theprocessing offloader using the techniques as described herein.

The first multimedia device may forward rendered multimedia informationfrom the processing offloader to the third multimedia device (block416). The process as described herein may be repeated for multiplemultimedia devices. In some embodiments, the above-described techniquesmay be repeated for subsequent multimedia devices until the bandwidth ofthe processing offloader cannot process and render UI graphics commandswithout increased latency and/or delay.

Discovery of Processing Offloader

As shown in FIG. 1 , a networked environment may include a processingoffloader configured to handle processing instructions on behalf ofmultimedia device(s) in the networked environment. In some embodiments,the processing offloader may connect to a multimedia device (e.g., firstmultimedia device as shown in FIG. 1 ) via an interconnect.

In some cases, a multimedia device (e.g., first multimedia device) maydiscover and identify the processing offloader when the processingoffloader is connected to the networked environment. Upon discoveringand identifying the processing offloader, a multimedia device maydetermine whether to offload UI processing functionality to theprocessing offloader.

However, for a variety of reasons, the multimedia may need tore-discover the processing offloader. For example, if a multimediadevice is rebooted, the multimedia device may re-discover all devicesconnected to the multimedia device, including the processing offloader.

FIG. 5 depicts a flow process 500 illustrating a method to discover aprocessing offloader in a networked environment, consistent with variousembodiments.

A multimedia device may discover a processing offloader in the networkedenvironment (block 502). A networked environment may include multiplemultimedia devices, where a first multimedia device discovers aprocessing offloader connected to the network environment via aninterconnect. In some embodiments, a multimedia device may inspect allinterconnects to determine whether a device (e.g., processing offloader,a second multimedia device, etc.) is connected to the multimedia devicevia the interconnect.

In some embodiments, a first multimedia device may transmit a request toall devices connected to the first multimedia device viainterconnect(s). In response, each connected device, such as aprocessing offloader, may transmit a response to the request, where theresponse includes information identifying the device. Examples ofinformation identifying the device may include a serial number, modelnumber, current firmware iteration, etc. In some embodiments, theresponse identifying the device may include processing capacity and/orbandwidth of the device (e.g., processing offloader).

In some embodiments, a multimedia device (e.g., first multimedia device)may synchronize device(s) within the networked environment. For example,a first multimedia device may synchronize communication of informationbetween a second multimedia device and the processing offloader. Suchsynchronizing may occur upon discovery of a processing offloader or uponstartup of the multimedia device and/or the processing offloader. Insome embodiments, a multimedia device may synchronize the communicationbetween a proxy executing on the multimedia device and a first UIexecuting on the processing offloader.

In some embodiments, synchronizing may include the first multimediadevice forwarding UI graphics rendering instructions to the UI of theprocessing offloader and forwarding the rendered graphics data to aproxy on the second multimedia device in sync with one another. In otherwords, the timing of the forwarding of information between the secondmultimedia device and the processing offloader may be synchronized sothat information is received at each device at specified times. In otherembodiments, an internal timer/clock of the second multimedia device andthe processing offloader may be synchronized.

The first multimedia device may determine the bandwidth of theprocessing offloader and a multimedia device (block 504). In someembodiments, the first multimedia device may inspect the interconnectbetween the first multimedia device and the processing offloader todetermine the bandwidth available at the processing offloader. Thebandwidth may be determined by determining the processing resourcesutilized by the processing offloader against a maximum processingcapacity of the processing offloader. If the processing offloader hasbandwidth available for additional processing capability, at least oneof the multimedia device UIs in the networked environment may beprocessed on the processing offloader.

In some embodiments, the first multimedia device may determine abandwidth of each multimedia device within the networked environment.For example, the first multimedia device may inspect the interconnect(s)of the second multimedia device to determine the available bandwidth forthe second multimedia device. The first multimedia device may determinethe amount of available processing capacity (or bandwidth) of the secondmultimedia device. In some embodiments, each multimedia device (e.g.,second multimedia device) may determine its available processingresources by inspecting the processing utilization (e.g., the exhaustedprocessing resources compared to the maximum processing resources) andreporting the processing capacity to one of the first multimedia deviceand the processing offloader.

The first multimedia device may determine whether a multimedia devicebandwidth falls below a threshold bandwidth (block 506). The firstmultimedia device may compare the processing resources or bandwidth fora multimedia device (e.g. second multimedia device) against a thresholdbandwidth to determine whether the processing offloader should handleprocessing capabilities for that multimedia device.

For example, the first multimedia device may determine that the secondmultimedia device bandwidth is 3K MIPS (or 75%) of its maximumprocessing capacity of 4K MIPS. In this example, if the thresholdbandwidth is 2K MIPS (or 50% of the maximum bandwidth), the secondmultimedia device processing instructions may be processed and renderedby the processing offloader, as the second multimedia device availableprocessing resources is close to its maximum bandwidth.

In some embodiments, if it is determined that a multimedia device (e.g.,second multimedia device) has a bandwidth that exceed the thresholdbandwidth, the native UI on the multimedia device executes processingcapabilities to process the instructions and render updated UI graphics(block 508).

The native UI of a multimedia device (e.g., second multimedia device)may be shut down (or disabled) based on determining that the processingresources of the multimedia device exceeds the threshold bandwidth(block 510). Shutting down the native UI may include disabling the UIand no longer processing graphics rendering instruction(s) relating tothe UI. With the native UI disabled, the multimedia device (e.g., secondmultimedia device) may transmit all future graphics renderinginstructions relating to the UI to the processing offloader.

A proxy may be enabled on a multimedia device (e.g., second multimediadevice) based on determining that the processing utilization of themultimedia device exceeds the threshold bandwidth (block 512). As notedabove, the proxy may be configured to receive rendered graphicsrepresenting a UI and/or an updated UI, and the proxy can output therendered UI to an output device.

The processing offloader may generate a UI for the second multimediadevice (block 514). In some embodiments, a UI is generated at theprocessing offloader upon receipt of a first graphics rendering command(or “instruction”) from a multimedia device. In other embodiments, theprocessing offloader generates a UI for multimedia device(s) based onreceipt of a request to generate a UI for the multimedia device(s).

A multimedia device (e.g., second multimedia device) may transmit afirst UI graphics rendering instruction to the processing offloader(block 516). In some embodiments, the UI graphics rendering instructionsmay be transmitted from the second multimedia device to the processingoffloader via a first multimedia device. The first multimedia device mayreceive the instructions via an interconnect (e.g., MOCA™ connection)and forward the instructions to the processing offloader based ondetermining the processing offloader as the destination for theinstructions.

Upon receipt of the instructions, the processing offloader may processthe instructions and render rendered multimedia information based on theprocessed instruction. The rendered multimedia information may beutilized by a proxy of a multimedia device (e.g., second multimediadevice) to output an updated UI onto an output device.

The second multimedia device may receive rendered multimedia informationfrom the processing offloader (block 518). Upon receipt of the renderedmultimedia information representing the rendered UI, the proxy of the ofthe multimedia device (e.g., second multimedia device) may render a UIand output the rendered UI to an output device.

Processing System

FIG. 6 is a block diagram illustrating an example of a processing system600 in which at least some operations described herein can beimplemented. For example, some components of the processing system 600may be hosted on a computing device (e.g., multimedia device 102, 104,106 of FIG. 1 , processing offloader 108 of FIG. 1 , etc.).

The processing system 600 may include one or more central processingunits (“processors”) 602, main memory 606, non-volatile memory 610,network adapter 612 (e.g., network interface), video display 618,input/output devices 620, control device 622 (e.g., keyboard andpointing devices), drive unit 624 including a storage medium 626, andsignal generation device 630 that are communicatively connected to a bus616. The bus 616 is illustrated as an abstraction that represents one ormore physical buses and/or point-to-point connections that are connectedby appropriate bridges, adapters, or controllers. The bus 616,therefore, can include a system bus, a Peripheral Component Interconnect(PCI) bus or PCI-Express bus, a HyperTransport or industry standardarchitecture (ISA) bus, a small computer system interface (SCSI) bus, auniversal serial bus (USB), IIC (I2C) bus, or an Institute of Electricaland Electronics Engineers (IEEE) standard 1394 bus (also referred to as“Firewire”).

The processing system 600 may share a similar computer processorarchitecture as that of a desktop computer, tablet computer, personaldigital assistant (PDA), mobile phone, game console, music player,wearable field device (e.g., a watch or fitness tracker),network-connected (“smart”) device (e.g., a television or home assistantdevice), virtual/augmented reality systems (e.g., a head-mounteddisplay), or another electronic device capable of executing a set ofinstructions (sequential or otherwise) that specify action(s) to betaken by the processing system 600.

While the main memory 606, non-volatile memory 610, and storage medium626 (also called a “machine-readable medium”) are shown to be a singlemedium, the term “machine-readable medium” and “storage medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized/distributed database and/or associated caches and servers)that store one or more sets of instructions 628. The term“machine-readable medium” and “storage medium” shall also be taken toinclude any medium that is capable of storing, encoding, or carrying aset of instructions for execution by the processing system 600.

In general, the routines executed to implement the embodiments of thedisclosure may be implemented as part of an operating system or aspecific application, component, program, object, module, or sequence ofinstructions (collectively referred to as “computer programs”). Thecomputer programs typically comprise one or more instructions (e.g.,instructions 604, 608, 628) set at various times in various memory andstorage devices in a computing device. When read and executed by the oneor more processors 602, the instruction(s) cause the processing system600 to perform operations to execute elements involving the variousaspects of the disclosure.

Moreover, while embodiments have been described in the context of fullyfunctioning computing devices, those skilled in the art will appreciatethat the various embodiments are capable of being distributed as aprogram product in a variety of forms. The disclosure applies regardlessof the particular type of machine or computer-readable media used toactually effect the distribution.

Further examples of machine-readable storage media, machine-readablemedia, or computer-readable media include recordable-type media such asvolatile and non-volatile memory devices 610, floppy and other removabledisks, hard disk drives, optical disks (e.g., Compact Disk Read-OnlyMemory (CD-ROMS), Digital Versatile Disks (DVDs)), and transmission-typemedia such as digital and analog communication links.

The network adapter 612 enables the processing system 600 to mediatedata in a network 614 with an entity that is external to the processingsystem 600 through any communication protocol supported by theprocessing system 600 and the external entity. The network adapter 612can include a network adaptor card, a wireless network interface card, arouter, an access point, a wireless router, a switch, a multilayerswitch, a protocol converter, a gateway, a bridge, bridge router, a hub,a digital media receiver, and/or a repeater.

The network adapter 612 may include a firewall that governs and/ormanages permission to access/proxy data in a computer network and tracksvarying levels of trust between different machines and/or applications.The firewall can be any number of modules having any combination ofhardware and/or software components able to enforce a predetermined setof access rights between a particular set of machines and applications,machines and machines, and/or applications and applications (e.g., toregulate the flow of traffic and resource sharing between theseentities). The firewall may additionally manage and/or have access to anaccess control list that details permissions including the access andoperation rights of an object by an individual, a machine, and/or anapplication, and the circumstances under which the permission rightsstand.

The techniques introduced here can be implemented by programmablecircuitry (e.g., one or more microprocessors), software and/or firmware,special-purpose hardwired (i.e., non-programmable) circuitry, or acombination of such forms. Special-purpose circuitry can be in the formof one or more application-specific integrated circuits (ASICs),programmable logic devices (PLDs), field-programmable gate arrays(FPGAs), etc.

Processing Offloader Modules

With reference to FIG. 7 , an offloader or co-processor module 708 canconnect to a first multimedia device, such as a set-top box 702 via aphysical connection, such as a USB connection 712, for example. Asdepicted in the figure, the co-processor module 708 can be aself-contained, externally located device housing an offloader, such asoffloader 108 or 208 described above, along with any necessary ancillarycomponents. In some embodiments, an internal co-processor module 709 canbe positioned inside a housing 705 of the set-top box 702 and connectedvia an internal interconnect. For example and without limitation, theinternal co-processor module 709 can be connected via any suitableconnection, such as a USB connector, an existing test or diagnosticconnection, or daisy chained to an existing internal cable connection.In some embodiments, both an external co-processor module 708 and aninternal co-processor module 709 can be connected to the set-top box702. Although various embodiments herein have been described asconnecting the offloader or co-processor to the first multimedia device,the offloader can be connected to the second and/or third multimediadevices in lieu of or in addition to connecting the offloader to onlythe first multimedia device.

Remarks

The foregoing description of various embodiments of the claimed subjectmatter has been provided for the purposes of illustration anddescription. It is not intended to be exhaustive or to limit the claimedsubject matter to the precise forms disclosed. Many modifications andvariations will be apparent to one skilled in the art. Embodiments werechosen and described in order to best describe the principles of theinvention and its practical applications, thereby enabling those skilledin the relevant art to understand the claimed subject matter, thevarious embodiments, and the various modifications that are suited tothe particular uses contemplated.

Although the Detailed Description describes certain embodiments and thebest mode contemplated, the technology can be practiced in many ways nomatter how detailed the Detailed Description appears. Embodiments mayvary considerably in their implementation details, while still beingencompassed by the specification. Particular terminology used whendescribing certain features or aspects of various embodiments should notbe taken to imply that the terminology is being redefined herein to berestricted to any specific characteristics, features, or aspects of thetechnology with which that terminology is associated. In general, theterms used in the following claims should not be construed to limit thetechnology to the specific embodiments disclosed in the specification,unless those terms are explicitly defined herein. Accordingly, theactual scope of the technology encompasses not only the disclosedembodiments, but also all equivalent ways of practicing or implementingthe embodiments.

The language used in the specification has been principally selected forreadability and instructional purposes. It may not have been selected todelineate or circumscribe the subject matter. It is therefore intendedthat the scope of the technology be limited not by this DetailedDescription, but rather by any claims that issue on an application basedhereon. Accordingly, the disclosure of various embodiments is intendedto be illustrative, but not limiting, of the scope of the technology asset forth in the following claims.

What is claimed is:
 1. A method performed by a first multimedia devicefor managing a processing offloader, the method comprising: receiving aninput from a second multimedia device representing a request for theprocessing offloader to process user interface graphics renderinginstructions on behalf of the second multimedia device; determining, bya processor, a processing bandwidth of the processing offloader;comparing the processing bandwidth of the processing offloader with amaximum processing bandwidth of the processing offloader to determine anavailable processing bandwidth of the processing offloader, wherein saidforwarding instructions from the second multimedia device to theprocessing offloader is based on the available processing bandwidth ofthe processing offloader exceeding a threshold processing offloaderbandwidth transmitting a request for the second multimedia device todisable a native UI executing on the second multimedia device and enablea proxy; and forwarding rendered user interface graphics received fromthe processing offloader to the second multimedia device.
 2. The methodof claim 1, further comprising: comparing the processing bandwidth ofthe second multimedia device with a maximum processing bandwidth of thesecond multimedia device to determine an available processing bandwidthof the second multimedia device, wherein the available processingbandwidth of the second multimedia device indicates an availableprocessing resources for the second multimedia device, wherein saidforwarding instructions from the second multimedia device to theprocessing offloader is based on the available processing bandwidth ofthe second multimedia device being less than the available processingbandwidth of the processing offloader.
 3. The method of claim 1, whereinthe first multimedia device communicates the second multimedia devicevia a coaxial interconnect, and wherein the first multimedia devicecommunicates with the processing offloader via a universal serial businterconnect.
 4. The method of claim 1, wherein the proxy executing onthe second multimedia device is configured to render UI graphics to anoutput device based on receiving the rendered multimedia.
 5. The methodof claim 1, further comprising: determining, by a processor, an updatedprocessing bandwidth of the processing offloader based on transmittinginstructions from the second multimedia device to the processingoffloader; and forwarding instructions from a third multimedia device tothe processing offloader based on a differential between the updatedprocessing bandwidth of the processing offloader and a maximumprocessing bandwidth of the processing offloader exceeding a thresholdprocessing offloader bandwidth.
 6. The method of claim 5, wherein saidforwarding instructions from the second multimedia device to theprocessing offloader further includes a request for the processingoffloader to enable a first UI configured to process instructions andrender rendered multimedia based on the instructions received from thesecond multimedia device, and wherein said forwarding instructions fromthe third multimedia device to the processing offloader further includesa request for the processing offloader to enable a second UI configuredto process instructions and render rendered multimedia based on theinstructions received from the third multimedia device.
 7. A computingdevice, comprising: a memory that includes instructions for managing aprocessing offloader, wherein the instructions, when executed by aprocessor, cause the processor to: receive a request for a processingoffloader to process instructions, including user interface (UI)graphics rendering instructions, on behalf of a first multimedia device;determine that an available processing bandwidth of the first multimediadevice is less than an available processing bandwidth of the processingoffloader; forward instructions from the first multimedia device to theprocessing offloader based on determining the available processingbandwidth of the first multimedia device is less than the availableprocessing bandwidth of the processing offloader; transmitting a requestfor the first multimedia device to disable a native UI executing on thefirst multimedia device and enable a proxy; and forward renderedmultimedia UI graphics received from the processing offloader to thefirst multimedia device.
 8. The computing device of claim 7, furthercausing the processor to: receive an input from a second multimediadevice; compare the available processing bandwidth of the firstmultimedia device and a maximum processing bandwidth of the firstmultimedia device to determine a processing bandwidth differential ofthe first multimedia device; compare an available processing bandwidthof the second multimedia device and a maximum processing bandwidth ofthe second multimedia device to determine a processing bandwidthdifferential of the second multimedia device; and determine that theprocessing bandwidth differential of the first multimedia device is lessthan the processing bandwidth differential of the second multimediadevice indicating that available processing resources of the firstmultimedia device is less than available processing resources of thesecond multimedia device.
 9. The computing device of claim 7, whereinthe proxy is configured to output rendered multimedia to an outputdevice upon receiving the rendered multimedia.
 10. The computing deviceof claim 7, further causing the processor to: determine an updatedprocessing bandwidth of the processing offloader indicating availableprocessing resources of the processing offloader upon receipt ofinstructions from the first multimedia device; compare the updatedprocessing bandwidth of the processing offloader with a maximumprocessing bandwidth of the processing offloader; forward instructionsfrom a second multimedia device to the processing offloader based on adifferential between the updated bandwidth of the processing offloaderand the maximum processing bandwidth of the processing offloaderexceeding a threshold processing offloader bandwidth.
 11. The computingdevice of claim 10, wherein said forward instructions from the firstmultimedia device to the processing offloader further includes a requestto enable a first UI at the processing offloader to process instructionsand render rendered multimedia based on the received instructions fromthe first multimedia device, and wherein said forward instructions fromthe second multimedia device to the processing offloader furtherincludes a request for the processing offloader to enable a second UIconfigured to process instructions and render rendered multimedia basedon the received instructions from the second multimedia device.
 12. Amethod performed by a first multimedia device for managing a processingoffloader, the method comprising: receiving an input from a secondmultimedia device, the input representing a request for the processingoffloader to process instructions on behalf of the second multimediadevice; identifying a processing bandwidth of the first multimediadevice and the second multimedia device; determining, by a processor,that the processing bandwidth of the first multimedia device exceeds theprocessing bandwidth of the second multimedia device; forwarding userinterface graphics rendering instructions received from a satellite fromthe second multimedia device to the processing offloader based ondetermining that the processing bandwidth of the first multimedia deviceexceeds the processing bandwidth of the second multimedia device;transmitting a request for the second multimedia device to disable anative UI executing on the second multimedia device and enable a proxy;and forwarding rendered user interface graphics received from theprocessing offloader to the second multimedia device.
 13. The method ofclaim 12, further comprising: determining an updated processingbandwidth of the processing offloader indicating available processingresources of the processing offloader upon receipt of instructions fromthe second multimedia device; forwarding instructions from the firstmultimedia device to the processing offloader based on a differentialbetween the updated processing bandwidth of the processing offloader anda maximum processing bandwidth of the processing offloader exceeding athreshold processing offloader bandwidth.
 14. The method of claim 13,wherein said proxy is configured to receive rendered multimedia andoutput UI graphics based on the rendered multimedia received from thesecond multimedia device, and wherein said forwarding instructions fromthe first multimedia device to the processing offloader includes arequest to disable a native UI on the first multimedia device and enablea proxy configured to receive rendered multimedia and output UI graphicsbased on the rendered multimedia received from the first multimediadevice.